package 框架学习.SpringBoot.原理.springboot原理.自动配置.案例;

/**
 * 自动配置案例——自定义starter<p></p>
 * 案例需求：自定义aliyun-oss-spring-boot-starter起步依赖，完成阿里云OSS操作工具类AliyunOssUtils的自动配置<p>
 * 步骤：<p>
 * 1、创建aliyun-oss-spring-boot-starter模块（maven）<p>
 * 2、创建aliyun-oss-spring-boot-autoconfigure模块，在starter中引入<p>
 * 3、在aliyun-oss-spring-boot-autoconfigure模块中定义自动配置类，并定义自动配置文件：META-INF/spring/xxxx.import
 */
public class index {
    /**
     * 所谓starter，指的就是springboot中的起步依赖<p>
     * 自定义starter的意义：<p>
     * 有很多项目中使用了第三方依赖，而很多依赖由特别通用<p>
     * 比如之前的阿里云OSS，它并没有给我们定义一个起步依赖<p>
     * 我们在使用的时候，还需要自己引入依赖、自己配置、自己根据sdk实例来改造工具类，十分繁琐<p></p>
     * <p>
     * 在实际开发中，经常会定义一些公共组件，提供给各个项目团队使用。而在SpringBoot项目中，一般会将这些公共组件封装为SpringBoot的starter<p></p>
     * <p>
     * SpringBoot起步依赖的命名规范：<p>
     * 1、springboot官方起步依赖：spring-boot-start-xxx（功能）<p>
     * 2、其他技术依赖：xxx（功能）-spring-boot-starter<p></p>
     * <p>
     * 起步依赖中没有Java代码<p>
     * 其实起步依赖就只做了一件事情：将相关的依赖配置在了配置文件（它自己的pom.xml）里<p>
     * 其中有一个依赖比较特殊：自动配置的依赖<p>
     * 这个依赖中有Java类，其中有自动配置类，在其中声明了一些bean<p></p>
     * 我们的自动配置类完成了之后，就可以在<a href="">META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports</a>
     * 文件（也是第三方自己的文件）中配置这个自动配置类<p>
     * 这样springboot项目在启动时就会自动将里面的bean加入到IOC容器中<p></p>
     * <p>
     * 我们自定义starter，需要做两个模块：<p>
     * 1、依赖管理功能（starter），这个模块只做一件事——将相关依赖配置在配置文件中<p>
     * 2、自动配置功能（autoConfigure），这个模块中来完成自动配置的操作<p>
     * 最终在starter中要吧autoConfigure引入进来<p>
     * 将来进行项目开发，就只需要引入一个起步依赖starter就行了<p>
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
